Page({
  data: {
    searchKeyword: "", // 搜索关键词
    searchHistory: [], // 搜索记录
    posts: [], // 搜索结果列表
    isSearching: false, // 是否正在搜索
    isLoading: false, // 是否正在加载
    hasMore: true, // 是否还有更多数据
    page: 1, // 当前页数
    pageSize: 10, // 每页数据量
  },

  onLoad() {
    // 从缓存中加载搜索记录
    this.loadSearchHistory();
  },

  // 输入框内容变化时触发
  onInput(e) {
    this.setData({
      searchKeyword: e.detail.value,
    });
  },

  // 点击搜索按钮时触发
  onSearch() {
    const keyword = this.data.searchKeyword.trim();
    if (!keyword) {
      wx.showToast({
        title: "请输入搜索内容",
        icon: "none",
      });
      return;
    }

    // 将搜索关键词存入缓存
    this.saveSearchHistory(keyword);

    // 切换到搜索状态
    this.setData({
      isSearching: true,
      posts: [],
      page: 1,
      hasMore: true,
    });

    // 加载搜索结果
    this.loadPosts();
  },

  // 点击搜索记录时触发
  onHistoryTap(e) {
    const keyword = e.currentTarget.dataset.item;
    this.setData({
      searchKeyword: keyword,
    });
    this.onSearch(); // 直接触发搜索
  },

  // 加载数据
  loadPosts(callback) {
    if (this.data.isLoading || !this.data.hasMore) {
      console.log('阻止请求: isLoading =', this.data.isLoading, 'hasMore =', this.data.hasMore);
      return; // 如果正在加载或没有更多数据，直接返回
    }

    this.setData({ isLoading: true }); // 设置加载状态为 true

    const { page, pageSize, searchKeyword } = this.data;

    // 调用后端接口
    wx.request({
      url: "http://localhost:8080/user/demand/page",
      method: "GET",
      data: {
        searchContent: searchKeyword,
        page,
        pageSize,
      },
      success: (res) => {
        const { total, records } = res.data.data;

        // 预处理数据，将 tags 和 urlList 转换为数组
        const processedRecords = records.map((item) => {
          const urlList = item.urlList ? item.urlList.split(",") : [];
          return {
            ...item,
            tags: item.tags ? item.tags.split(",") : [],
            UrlList: urlList,
          };
        });

        this.setData({
          posts: page === 1 ? processedRecords : this.data.posts.concat(processedRecords),
          total,
          isLoading: false, // 加载完成，设置加载状态为 false
          hasMore: processedRecords.length >= pageSize, // 判断是否还有更多数据
        });

        // 如果有回调函数，执行回调
        if (typeof callback === "function") {
          callback();
        }
      },
      fail: () => {
        this.setData({ isLoading: false }); // 加载失败，设置加载状态为 false

        // 如果有回调函数，执行回调
        if (typeof callback === "function") {
          callback();
        }
      },
    });
  },

  // 从缓存中加载搜索记录
  loadSearchHistory() {
    const history = wx.getStorageSync("searchHistory") || [];
    this.setData({
      searchHistory: history,
    });
  },

  // 将搜索关键词存入缓存
  saveSearchHistory(keyword) {
    let history = wx.getStorageSync("searchHistory") || [];

    // 去重
    history = history.filter((item) => item !== keyword);

    // 添加到最前面
    history.unshift(keyword);

    // 最多保留 10 条记录
    if (history.length > 10) {
      history = history.slice(0, 10);
    }

    // 更新缓存
    wx.setStorageSync("searchHistory", history);

    // 更新页面数据
    this.setData({
      searchHistory: history,
    });
  },

  // 跳转到详情页
  navigateToDetail(event) {
    const id = event.currentTarget.dataset.id; // 获取帖子ID
    wx.getStorage({
      key: 'isLogin',
      success: (res) => {
        if (res.data) {
          // 已登录，跳转到详情页
          wx.navigateTo({
            url: `/demand/pages/demand_detail/demand_detail?demandId=${id}`
          });
        } else {
          // 未登录，跳转到登录页
          wx.navigateTo({
            url: '/pages/login/login'
          });
        }
      },
      fail: () => {
        // 未登录，跳转到登录页
        wx.navigateTo({
          url: '/pages/login/login'
        });
      }
    });
  },
});
